-
Notifications
You must be signed in to change notification settings - Fork 25
feat: add full ESM support #125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@@ -67,7 +67,7 @@ | |||
"scripts": { | |||
"bootstrap": "yarn --network-timeout 100000 && yarn --cwd www --network-timeout 100000", | |||
"build": "rimraf lib && yarn build:esm && yarn build:cjs && yarn build:popper", | |||
"build:esm": "babel src --out-dir lib --delete-dir-on-start --extensions .ts,.tsx --ignore '**/*.d.ts' && yarn build:esm:types", | |||
"build:esm": "babel src --out-dir lib --delete-dir-on-start --extensions .ts,.tsx --ignore '**/*.d.ts' && yarn build:esm:types && echo '{\"type\": \"module\"}' > lib/package.json", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe just add the type: module
to the root package.json?
@@ -4,5 +4,8 @@ module.exports = (api) => ({ | |||
['@babel/react', { runtime: 'automatic' }], | |||
'@babel/preset-typescript', | |||
], | |||
plugins: [api.env() === 'test' && 'istanbul'].filter(Boolean), | |||
plugins: [ | |||
'babel-plugin-add-import-extension', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the safer approach here would be to not add this, and switch tsconfig to moduleResolution: 'NodeNext'
which will require extensions in the source. You get more validation from the TS compiler that it's correct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am unsure whether that is compatible with also outputting a CJS build though, but it should be?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried this initially, but had difficulties in getting docusaurus to resolve the paths with the ".js" extension and not breaking hot reload. There might be better support for TS in docusaurus v3, but that's another large exercise 😅
babel-plugin-add-import-extension
to add.js
extensions to sourcetype=module
package.json in lib folderdom-helpers
to v6